package util;

import DAO.NodeList;
import DAO.TreeNode;

import java.util.List;

/**
 * 更改布局的工具类
 */
public class LayoutUtil {


    // 布局的选择
    public static void SelectItem(int item) {
        // 自由布局
        if (item == 1) {
            for (int i = 0; i < NodeList.list.size(); i++) {
                TreeNode node = new TreeNode();
                node = NodeList.list.get(i);
                if (NodeList.getParent(node) == NodeList.getRoot()) {  // 只有根节点的子节点才需要分配左右
                    Balance();
                } else {
                    node.setPos(NodeList.getParent(node).getPos());  // 剩下的节点都是跟随他们的父节点
                }
            }
        }
        // 左布局
        if(item==2) {
            for(int i = 0; i<NodeList.list.size();i++) {
                TreeNode node = new TreeNode();
                node = NodeList.list.get(i);
                node.setPos(0);
            }
        }
        // 右布局
        if(item==3) {
            for(int i = 0; i<NodeList.list.size();i++) {
                TreeNode node = new TreeNode();
                node = NodeList.list.get(i);
                node.setPos(1);
            }
        }
        //设置每个节点坐标
        NodeLocatorUtil.locateX(NodeList.getRoot());
        NodeLocatorUtil.locateY(NodeList.getRoot());
    }


    // 左右分配平衡
    public static void Balance() {
        List<TreeNode> node = NodeList.getRoot().getNodeChildren();  // 取根节点下的所有字节点
        int length = node.size(); // 有多少子节点

        if(length > 1) {
            // 设置前一半的节点为pos=1
            for (int i = 0; i < length / 2; i++) {
                node.get(i).setPos(1);
            }

            // 设置后一半的节点为pos=0
            for (int i = length / 2; i < length; i++) {
                node.get(i).setPos(0);
                node.get(i).setX(NodeList.getRoot().getX() - 150);
            }
        }
    }
}



